#!/usr/bin/env bash
set -e

if ! git diff-index --quiet HEAD; then
    set +x
    echo "There are uncommitted changes:"
    git status --short
    echo "Doing nothing to avoid losing your work."
    exit 1
fi

remote_default="$(git config zulip.zulipRemote || echo upstream)"
pseudo_remote="$(git config zulip.prPseudoRemote || echo)"

request_id="$1"
remote=${2:-"$remote_default"}

if [ -z "$pseudo_remote" ]; then
    set -x
    git fetch "$remote" "pull/$request_id/head"
    git reset --hard FETCH_HEAD
else
    target_ref=refs/remotes/"$pseudo_remote"/"$request_id"
    set -x
    git fetch "$remote" +"pull/$request_id/head:$target_ref"
    git reset --hard "$target_ref"
fi
